"""
配置app
"""
from flask import Flask
from comment.models import db
from comment.utils.limiter import limiter as lmt
from comment.utils.logging_shop import create_logger
from comment.utils.request_hook import jwt_token_autho
from comment.utils.shopping_redis import redis_client
from settings import map_config
from shopping.resources.user import user_bp


def creat_app(config_type):
    app = Flask(__name__)
    app.config.from_object(map_config.get(config_type))
    # 配置sqlalchemy
    db.init_app(app)
    # 初始化限流器
    lmt.init_app(app)
    # 加载日志
    create_logger(app)
    # 加载redis，用来缓存数据和短信验证码
    redis_client.init_app(app)
    # 自定义请求钩子
    app.before_request(jwt_token_autho)  # 在请求之前进行token的验证 所有的请求都会生效
    # 配置蓝图
    app.register_blueprint(user_bp)
    return app
